Route optimization for on-demand routing protocols for mesh networks

ABSTRACT

Various embodiments implement a set of low overhead mechanisms to enable on-demand routing protocols. The on-demand protocols use route accumulation during discovery floods to discover when better paths have become available even if the paths that the protocols are currently using are not broken. In other words, the mechanisms (or “Route Optimizations”) enable improvements to routes even while functioning routes are available. The Route Optimization mechanisms enable nodes in the network that passively learn routing information to notify nodes that need to know of changes in the routing information when the changes are important. Learning routing information on up-to-date paths and determining nodes that would benefit from the information is performed, in some embodiments, without any explicit control packet exchange. One of the Route Optimization mechanisms includes communicating information describing an improved route from a node where the improved route diverges from a less nearly optimal route.

CROSS REFERENCE TO RELATED APPLICATIONS

Priority/benefit claims for this application are made in theaccompanying Application Data Sheet. This application incorporates byreference for all purposes the following applications, all owned by theowner of the instant application:

-   -   U.S. application Ser. No. 14/286,461 (Docket No. FT-07-03-02),        filed May 23, 2014, now U.S. Pat. No. 9,167,496, first named        inventor Jorjeta Jetcheva, and entitled ROUTE OPTIMIZATION FOR        ON-DEMAND ROUTING PROTOCOLS FOR MESH NETWORKS;    -   U.S. application Ser. No. 13/204,902 (Docket No. FT-07-03-01),        filed Aug. 8, 2011, now U.S. Pat. No. 8,737,268, first named        inventor Jorjeta Jetcheva, and entitled ROUTE OPTIMIZATION FOR        ON-DEMAND ROUTING PROTOCOLS FOR MESH NETWORKS;    -   U.S. application Ser. No. 12/014,802 (Docket No. FT-2007-103US),        filed Jan. 16, 2008, now U.S. Pat. No. 7,995,501, first named        inventor Jorjeta Jetcheva, and entitled ROUTE OPTIMIZATION FOR        ON-DEMAND ROUTING PROTOCOLS FOR MESH NETWORKS;    -   U.S. PCT Application Serial No. PCT/US2006/027732 (Docket No.        FT.06.103PCT), filed Jul. 18, 2006, first named inventor Jorjeta        Jetcheva, and entitled ROUTE OPTIMIZATION FOR ON-DEMAND ROUTING        PROTOCOLS FOR MESH NETWORKS;    -   U.S. Provisional Application Ser. No. 60/700,930 (Docket No.        FT.2005.03), filed Jul. 20, 2005, first named inventor Jorjeta        Jetcheva, and entitled ROUTE OPTIMIZATION FOR ON-DEMAND ROUTING        PROTOCOLS FOR MESH NETWORKS;    -   U.S. Provisional Application Ser. No. 60/707,214 (Docket No.        FT.2005.03B), filed Aug. 11, 2005, first named inventor Jorjeta        Jetcheva, and entitled ROUTE OPTIMIZATION FOR ON-DEMAND ROUTING        PROTOCOLS FOR MESH NETWORKS;    -   U.S. Provisional Application Ser. No. 60/709,975 (Docket No.        FT.2005.03C), filed Aug. 19, 2005, first named inventor Jorjeta        Jetcheva, and entitled ROUTE OPTIMIZATION FOR ON-DEMAND ROUTING        PROTOCOLS FOR MESH NETWORKS; and    -   U.S. Provisional Application Ser. No. 60/806,579 (Docket No.        FT.2005.03E), filed Jul. 5, 2006, first named inventor Jorjeta        Jetcheva, and entitled ROUTE OPTIMIZATION FOR ON-DEMAND ROUTING        PROTOCOLS FOR MESH NETWORKS.

BACKGROUND

1. Field

Advancements in routing protocols for mesh networks are needed toprovide improvements in performance, efficiency, and utility of use.Embodiments described elsewhere herein enable the improvements.

2. Related Art

Unless expressly identified as being publicly or well known, mentionherein of techniques and concepts, including for context, definitions,or comparison purposes, should not be construed as an admission thatsuch techniques and concepts are previously publicly known or otherwisepart of the prior art. All references cited herein (if any), includingpatents, patent applications, and publications, are hereby incorporatedby reference in their entireties, whether specifically incorporated ornot, for all purposes. Nothing herein is to be construed as an admissionthat any of the references are pertinent prior art, nor does itconstitute any admission as to the contents or date of actualpublication of these documents.

SUMMARY

The invention can be implemented in numerous ways, including as aprocess, an article of manufacture, an apparatus, a system, acomposition of matter, and a computer readable medium such as a computerreadable storage medium or a computer network wherein programinstructions are sent over optical or electronic communication links. Inthis specification, these implementations, or any other form that theinvention may take, may be referred to as techniques. In general, theorder of the steps of disclosed processes may be altered within thescope of the invention. An exposition of one or more embodiments of theinvention is provided in the Detailed Description. The DetailedDescription includes an Introduction to facilitate the more rapidunderstanding of the remainder of the Detailed Description. TheIntroduction includes Illustrative Combinations that tersely summarizeillustrative systems and methods in accordance with the concepts taughtherein. As is discussed in more detail in the Conclusions, the inventionencompasses all possible modifications and variations within the scopeof the issued claims, which are appended to the very end of the issuedpatent.

BRIEF DESCRIPTION OF THE DRAWINGS

Various embodiments of the invention are disclosed in the followingdetailed description and the accompanying drawings.

FIG. 1 illustrates selected details of an embodiment of a mesh networkand associated path computation, a path through the network, and variousentries in a route cache.

FIG. 2 illustrates selected details of an embodiment of mesh networkRoute Discovery processing, including a Route Request and a Route Reply.

FIGS. 3A and 3B illustrate a time-sequence operational view of selectedaspects of an embodiment of mesh routing optimization.

FIG. 4 illustrates selected details of hardware aspects of an embodimentof a node.

FIG. 5 illustrates selected details of software aspects of an embodimentof a node.

DETAILED DESCRIPTION

The invention can be implemented in numerous ways, including as aprocess, an article of manufacture, an apparatus, a system, acomposition of matter, and a computer readable medium such as a computerreadable storage medium or a computer network wherein programinstructions are sent over optical or electronic communication links. Inthis specification, these implementations, or any other form that theinvention may take, may be referred to as techniques. In general, theorder of the steps of disclosed processes may be altered within thescope of the invention.

A detailed description of one or more embodiments of the invention isprovided below along with accompanying figures that illustrate theprinciples of the invention. The invention is described in connectionwith such embodiments, but the invention is not limited to anyembodiment. The scope of the invention is limited only by the claims andthe invention encompasses numerous alternatives, modifications andequivalents. Numerous specific details are set forth in the followingdescription in order to provide a thorough understanding of theinvention. These details are provided for the purpose of example and theinvention may be practiced according to the claims without some or allof these specific details. For the purpose of clarity, technicalmaterial that is known in the technical fields related to the inventionhas not been described in detail so that the invention is notunnecessarily obscured.

INTRODUCTION

This introduction is included only to facilitate the more rapidunderstanding of the Detailed Description. The invention is not limitedto the concepts presented in the introduction, as the paragraphs of anyintroduction are necessarily an abridged view of the entire subject andare not meant to be an exhaustive or restrictive description. Forexample, the introduction that follows provides overview informationlimited by space and organization to only certain embodiments. There arein fact many other embodiments, including those to which claims willultimately be drawn, which are discussed throughout the balance of thespecification. As is discussed in more detail in the Conclusions, theinvention encompasses all possible modifications and variations withinthe scope of the issued claims, which are appended to the very end ofthe issued patent.

In some implementations, on-demand routing protocols for mesh networksdiscover routes only when nodes need to communicate and have no validroute to a destination. As a result, when network topology changes dueto movement or addition of new nodes to a network, and when the changesresult in better paths to the destination being available, the routingprotocol does not discover and use the better paths unless a route thenode is currently using breaks. Various embodiments implement a set oflow overhead mechanisms to enable on-demand routing protocols usingroute accumulation during discovery floods to discover when better pathshave become available even if the paths that the protocols are currentlyusing are not broken. In other words, the mechanisms (or “RouteOptimizations”) enable improvements to routes even while functioningroutes are available. The Route Optimization mechanisms enable nodes inthe network that passively learn routing information to notify nodesthat need to know of changes in the routing information when the changesare important. Learning routing information on up-to-date paths anddetermining nodes that would benefit from the information is performed,in some embodiments, without any explicit control packet exchange. Oneof the Route Optimization mechanisms includes communicating informationdescribing an improved route from a node where the improved routediverges from a less nearly optimal route.

Terms

Elsewhere herein terms are used to describe selected elements andaspects of various embodiments and implementations. Examples forselected terms follow.

Node: An example of a node is an electronic device.

Packet: An example of a packet is that nodes communicate information toeach other that is subdivided into packets.

Link: An example of a link is a conceptual representation of the abilityof two (or more) nodes to communicate with each other. A link may bewired (the nodes being connected by a physical medium for carryinginformation such as electrical or optical interconnect) or wireless (thenodes being connected without a physical medium, e.g., via radiotechnology).

Path/Route: An example of a path/route is a sequence of one or morelinks.

Path Metric: An example of a path metric is a number that reflects thedesirability of a path. For example, the number of links, e.g., the hopcount of a path, is one possible metric. Paths with a lower hop counthave advantages over paths with a higher hop count. The advantagesinclude less resource usage (as there is reduced forwarding) and lesslikelihood of lost packets (as there are fewer chances for loss beforepackets reach respective destinations).

Best Path: An example of a best path is an ordered list of nodes thatwhen transited (in order) by a packet result in an efficient traversalfrom a source to a destination, according to predetermined criteria.Since parameters and operating conditions vary over time, any best pathis also a “known” best path; e.g. it is based on criteria evaluated at aparticular point in time, and at a different point in time a differentbest path may be available. Best paths may also be considered to be“most nearly optimal” according to one or more metrics as measured withrespect to a routing protocol responsible for determining the bestpaths.

Network: An example of a network is a set of nodes that are enabled tocommunicate with each other via any combination of wired and wirelesslinks.

Mesh Network: An example of a mesh network is a set of nodes thatself-organize into a multi-hop network. In some usage scenarios the meshnetwork has limited resources (e.g. available bandwidth, availablecomputational power, and available energy).

Multi-Mesh Network: An example of a multi-mesh network is a set ofinterconnected meshes appearing to operate as a single network from aperspective of a user of resources provided by the multi-mesh network.

Shared Access Network: An example of a shared access network is anetwork such that a packet transmitted by any node is overheard by allother nodes in the network. An example implementation of such a networkis an 802.3 LAN.

Ingress Mesh: An example of an ingress mesh is a mesh where a packetenters a multi-mesh.

Egress Mesh: An example of an egress mesh is a mesh where a packet exits(or leaves) a multi-mesh.

Ingress Mesh Node: An example of an ingress mesh node is a node where apacket enters a mesh; e.g. the node forwarding the packet from anon-mesh link onto a mesh link/network.

Egress Mesh Node: An example of an egress mesh node is a node where apacket exits a mesh; e.g. the node forwarding the packet from a meshlink onto a non-mesh link/network.

Mesh Bridge (Node): An example of a mesh bridge is a node that issimultaneously participating in more than one mesh network at a time;e.g. the node is coupled to at least two mesh networks at once. Bridgenodes enable nodes connected on a first mesh (or that are part of thefirst mesh) to communicate with nodes connected on a second mesh (orthat are part of the second mesh).

(Mesh) Bridge Link: An example of a mesh bridge link is a link betweentwo bridge nodes (each being coupled to a respective mesh) used toforward traffic between the two meshes.

Ingress Bridge Node: An example of an ingress bridge node is the meshbridge where a packet exits (or leaves) an ingress mesh.

Egress Bridge Node: An example of an egress bridge node is the meshbridge where a packet enters an egress mesh.

Mesh Portal: An example of a mesh portal is a node that is part of amesh network and is also connected to another (shared access) network.Mesh portals enable nodes connected to the mesh, or that are part of themesh, to communicate with nodes that are part of the shared accessnetwork, or that may be reached through the shared access network. Insome embodiments the mesh network appears to outside networks as atransparent layer-2 transport, i.e. a packet injected into the mesh atone portal exits the mesh at another portal unmodified.

Ingress Mesh Portal: An example of an ingress mesh portal is the portalat which a packet enters a mesh, e.g., the portal that forwards thepacket from a non-mesh link/network onto a mesh link/network.

Egress Mesh Portal: An example of an egress mesh portal is the portal atwhich a packet exits the mesh, e.g., the portal that forwards the packetfrom a mesh link/network onto a non-mesh link/network.

Mesh Client Interface: An example of a mesh client interface is aninterface (that is part of a node of a mesh network) for coupling to aclient device.

Mesh Network Gateway Interface (mesh NGI): An example of a mesh NGI is anode that is part of a mesh network (e.g., has an interface configuredto be part of the mesh network) and is also connected to another network(e.g., has an interface configured to be on the other network). MeshNGIs enable nodes connected to a mesh network, or that are part of themesh, to communicate with nodes that are part of a shared accessnetwork, or that may be reached through the shared access network. Insome embodiments the mesh network appears to outside networks as atransparent layer 2 transport: a packet injected into the mesh at oneNGI exits the mesh at another NGI or Client Interface unmodified.

Ingress Mesh Interface: An example of an ingress mess interface is aninterface at which a packet enters a mesh, e.g., the interface thatforwards the packet from a non-mesh link onto a mesh link/network.

Egress Mesh Interface: An example of an egress mesh interface is theinterface at which a packet exits the mesh, e.g., the interface thatforwards the packet from a mesh link onto a non-mesh link/network.

Unicast: An example of unicast is communication between two nodes.

Broadcast: An example of broadcast is communication from one nodeintended to reach a plurality of nodes. In some usage scenarios theplurality of nodes includes all nodes on a network. In some scenarios abroadcast may not reach all intended nodes (due to packet loss, forexample).

Flood: An example of a flood is a broadcast sent by a node that is inturn rebroadcast by every other node receiving the broadcast, thuspotentially reaching all nodes in a network.

Routing Protocol: An example of a routing protocol is a set ofmechanisms implemented on each node in a mesh network, wherein themechanisms serve to discover information about the network and enableeach node on the network to communicate with other nodes of the network,even when the other nodes are multiple hops away from the respectivenode.

Path Accumulation: An example of path accumulation is when each nodeforwarding a packet adds its respective address to the packet.

Illustrative Combinations

The following is a collection of paragraphs that tersely summarizeillustrative systems and methods in accordance with the concepts taughtherein. Each of the paragraphs highlights various combinations offeatures using an informal pseudo-claim format. These compresseddescriptions are not meant to be mutually exclusive, exhaustive, orrestrictive and the invention is not limited to these highlightedcombinations. As is discussed in more detail in the Conclusion section,the invention encompasses all possible modifications and variationswithin the scope of the issued claims, which are appended to the veryend of the patent.

A first embodiment comprising a method comprising determining a firstroute and a second route from a source node to a destination node;comparing the first and the second routes; and communicating an improvedroute when the second route is better than the first route. Theaforementioned embodiment wherein the comparing is according to a countof hops between nodes. Any of the aforementioned embodiments wherein thecommunicating is conditional based in part on a retry-attempt-countbeing less than a predetermined threshold. Any of the aforementionedembodiments wherein the communicating is initiated by a node where thefirst and the second routes diverge. The aforementioned embodimentwherein the initiating node is where the first and the second routesfirst diverge. The first embodiment wherein a first node determining thefirst route and a second node determining the second route are distinctnodes or the same node. The first embodiment wherein a first nodedetermining the first route and the source node are distinct nodes orthe same node. The first embodiment wherein a second node determiningthe second route and the destination node are distinct nodes or the samenode. The first embodiment wherein at least one of the first route andthe second route is limited to a single link. The first embodimentwherein at least one of the first route and the second route comprises aplurality of links. The first embodiment wherein at least one of thefirst route and the second route passes through a single node. The firstembodiment wherein at least one of the first route and the second routepasses through a plurality of nodes.

The first embodiment wherein the communicating of the improved route isindiscriminate. The first embodiment wherein the communicating of theimproved route is selective. The aforementioned embodiment wherein theselective communicating is directed to at least one of an activelycommunicating node and a selectively identified node. The aforementionedembodiment further comprising identifying at least one of the activelycommunicating node and the selectively identified node. Theaforementioned embodiment wherein the selectively identified nodeprovides a service. The aforementioned embodiment wherein the servicecomprises at least one of an Internet interconnectivity service and aweb proxy service.

A second embodiment comprising all of the elements of the firstembodiment and further comprising collecting path information used inthe determining of the second route. The second embodiment wherein thepath information collecting is active or passive. The aforementionedembodiment wherein the active path information collecting comprisesobtaining path information in response to sending a control packetassociated with the path information collecting, and the passive pathinformation collecting is free of control packet sending. Any of thesecond and subsequent foregoing embodiments wherein the path informationcomprises information relating to topology of a mesh network. Any of thesecond and subsequent foregoing embodiments wherein the path informationcomprises accumulated path information.

A third embodiment comprising all of the elements of the secondembodiment and wherein the collected path information comprises a firstnetwork address of a first node determining the first route. Theaforementioned embodiment wherein the collected path information furthercomprises a second network address of a second node determining thesecond route. The aforementioned embodiment wherein the collected pathinformation comprises a third network address of a third node thatforwards traffic along a third route from the first node to the secondnode.

A fourth embodiment comprising a computer readable medium having a setof instructions stored therein which when executed cause functions to beperformed comprising determining a first route and a second route from asource node to a destination node; comparing the first and the secondroutes; and communicating an improved route when the second route isbetter than the first route. The aforementioned embodiment wherein thecomparing is according to a count of hops between nodes. Any of thefourth and subsequent foregoing embodiments wherein the communicating isconditional based in part on a retry-attempt-count being less than apredetermined threshold. Any of the fourth and subsequent foregoingembodiments wherein the communicating is initiated by a node where thefirst and the second routes diverge. The aforementioned embodimentwherein the initiating node is where the first and the second routesfirst diverge.

The aforementioned embodiment wherein the initiating node is where thefirst and the second routes first diverge. The fourth embodiment whereina first node determining the first route and a second node determiningthe second route are distinct nodes or the same node. The fourthembodiment wherein a first node determining the first route and thesource node are distinct nodes or the same node. The fourth embodimentwherein a second node determining the second route and the destinationnode are distinct nodes or the same node. The fourth embodiment whereinat least one of the first route and the second route is limited to asingle link. The fourth embodiment wherein at least one of the firstroute and the second route comprises a plurality of links. The fourthembodiment wherein at least one of the first route and the second routepasses through a single node. The fourth embodiment wherein at least oneof the first route and the second route passes through a plurality ofnodes.

The fourth embodiment wherein the communicating of the improved route isindiscriminate. The fourth embodiment wherein the communicating of theimproved route is selective. The aforementioned embodiment wherein theselective communicating is directed to at least one of an activelycommunicating node and a selectively identified node. The aforementionedembodiment further comprising identifying at least one of the activelycommunicating node and the selectively identified node. Theaforementioned embodiment wherein the selectively identified nodeprovides a service. The aforementioned embodiment wherein the servicecomprises at least one of an Internet interconnectivity service and aweb proxy service.

A fifth embodiment comprising all of the elements of the fourthembodiment and further comprising collecting path information used inthe determining of the second route. The fifth embodiment wherein thepath information collecting is active or passive. The aforementionedembodiment wherein the active path information collecting comprisesobtaining path information in response to sending a control packetassociated with the path information collecting, and the passive pathinformation collecting is free of control packet sending. Any of thefifth and subsequent foregoing embodiments wherein the path informationcomprises information relating to topology of a mesh network. Any of thefifth and subsequent foregoing embodiments wherein the path informationcomprises accumulated path information.

A sixth embodiment comprising all of the elements of the fifthembodiment and wherein the collected path information comprises a firstnetwork address of a first node determining the first route. Theaforementioned embodiment wherein the collected path information furthercomprises a second network address of a second node determining thesecond route. The aforementioned embodiment wherein the collected pathinformation comprises a third network address of a third node thatforwards traffic along a third route from the first node to the secondnode.

A seventh embodiment comprising a system comprising a wireless meshnetwork having at least two nodes; wherein each of the nodes comprises arespective wireless interface enabling communication with at least twoother nodes; wherein each of the nodes comprises a respective processingelement executing wireless mesh networking functions, the functionscomprising a path determination function to determine a path between twonodes of the wireless mesh network, a path comparison function tocompare two paths determined by the path determination function, and apath dissemination function to control distribution of path informationto nodes of the wireless mesh network; wherein the path disseminationfunction distributes a new path when the path comparison functionindicates a better path is available. The aforementioned embodimentwherein the comparison function compares hop counts between nodes. Anyof the seventh and subsequent foregoing embodiments wherein thedissemination is conditional based in part on a retry-attempt countbeing less than predetermined threshold. Any of the seventh andsubsequent foregoing embodiments wherein the dissemination is initiatedby a node where the new path diverges from a previous path.

The aforementioned embodiment wherein the initiating node is where thefirst and the second routes first diverge. The seventh embodimentwherein a first node determining the first route and a second nodedetermining the second route are distinct nodes or the same node. Theseventh embodiment wherein a first node determining the first route andthe source node are distinct nodes or the same node. The seventhembodiment wherein a second node determining the second route and thedestination node are distinct nodes or the same node. The seventhembodiment wherein at least one of the first route and the second routeis limited to a single link. The seventh embodiment wherein at least oneof the first route and the second route comprises a plurality of links.The seventh embodiment wherein at least one of the first route and thesecond route passes through a single node. The seventh embodimentwherein at least one of the first route and the second route passesthrough a plurality of nodes.

The seventh embodiment wherein the communicating of the improved routeis indiscriminate. The seventh embodiment wherein the communicating ofthe improved route is selective. The aforementioned embodiment whereinthe selective communicating is directed to at least one of an activelycommunicating node and a selectively identified node. The aforementionedembodiment further comprising identifying at least one of the activelycommunicating node and the selectively identified node. Theaforementioned embodiment wherein the selectively identified nodeprovides a service. The aforementioned embodiment wherein the servicecomprises at least one of an Internet interconnectivity service and aweb proxy service.

An eighth embodiment comprising all of the elements of the seventhembodiment and further comprising collecting path information used inthe determining of the second route. The eighth embodiment wherein thepath information collecting is active or passive. The aforementionedembodiment wherein the active path information collecting comprisesobtaining path information in response to sending a control packetassociated with the path information collecting, and the passive pathinformation collecting is free of control packet sending. Any of theeighth and subsequent foregoing embodiments wherein the path informationcomprises information relating to topology of a mesh network. Any of theeighth and subsequent foregoing embodiments wherein the path informationcomprises accumulated path information.

A ninth embodiment comprising all of the elements of the tenthembodiment and wherein the collected path information comprises a firstnetwork address of a first node determining the first route. Theaforementioned embodiment wherein the collected path information furthercomprises a second network address of a second node determining thesecond route. The aforementioned embodiment wherein the collected pathinformation comprises a third network address of a third node thatforwards traffic along a third route from the first node to the secondnode.

Routing Information and Discovery

Nodes retain and use routing information in part when performing variousnetworking protocols. Routing information is discovered and propagatedbetween nodes during operation of a network. As network topology changesover time (such as due to movement of nodes, addition of nodes, removalof nodes, and changes in environmental conditions affectingcommunication between nodes), new routing information is learned and insome cases distributed via any combination of active (i.e. includingoriginating control packets) and passive (i.e. without originatingcontrol packets) techniques, according to embodiment.

Routing Information

Each node in a mesh network implements a data structure, e.g., a “RouteCache”, describing links in the network that the node has learned. Nodesuse various techniques to combine the link information intopaths/routes. Then an “originating” node may use the path/routeinformation to send packets to various destination nodes, includingnodes that may be multiple hops away from the originating node.

FIG. 1 illustrates selected details of an embodiment of a mesh networkand associated path computation, a path through the network, and variousentries in a route cache. More specifically, the mesh network includesnodes “S” 100S, “A” 100A, “B” 100B, “C” 100C, “D” 100D, “E” 100E, “F”100F, “G” 100G, “H” 10011, and “J” 100J. A path is illustrated startingfrom “S” and reaching “D”, via “B”, “E”, “F”, and “J”. A route cacheimplemented by “S” describes various links in the network, including(“S”, “A”), (“S”, “B”), (“B”, “E”), (“E”, “F”), (“F”, “J”), (“J”, “D”),and (“G”, “H”). A path from “S” to “D” exists and may be represented as[(“S”, “B”), (“B”, “E”), (“E”, “F”), (“F”, “J”) (“J”, “D”)].

Discovery of Routing Information

A node participating in a mesh network (also known as a “mesh node”) andexecuting an on-demand routing protocol examines a Route Cacheimplemented in the node during processing associated with sending apacket to a destination. If the Route Cache lacks information describinga path (or route) to the destination, then the node, acting as anoriginator, initiates a “Route Discovery” operation to find a route.

The Route Discovery starts with a “Route Request” flood that isbroadcast by the originator and subsequently rebroadcast by all nodesreceiving the Route Discovery. The rebroadcast operations continue untilthe Route Discovery is flooded throughout all nodes of the network. Inembodiments implementing a routing protocol using path accumulationduring Route Discovery, as the Route Request is forwarded by each node,each respective node adds the address of the respective node to a listof addresses in a header of a packet associated with the Route Request.As a result, each node receiving the Route Request is provided withinformation describing nodes that have forwarded a copy of the RouteRequest and each node is enabled to “learn” about all the linkstraversed by the Route Request.

When a Route Request packet reaches the destination, the packet containsa list of nodes/links (i.e., a path) from the originator (or source)node to the destination node. The destination node then places the pathinside a “Route Reply” packet and sends the Route Reply to theoriginator of the Route Discovery to inform the originator about thelinks and the route that were discovered as part of the Route Discovery.Since the Route Reply is directed to the originator, communication ofupdated routing information is naturally limited to the originator (andnodes along a path from the destination to the originator). In someembodiments, Route Reply information is optionally directed to selectedadditional nodes other than the originator. In some embodiments theadditional nodes selected to receive Route Reply information areidentified by a user. In some embodiments the additional nodes areselected based on identification as providers of a service, the serviceincluding any combination of Internet interconnectivity and web proxy.In some embodiments additional nodes are identified as nodes likely torequire or benefit from new route information in the near future.

FIG. 2 illustrates selected details of an embodiment of mesh networkRoute Discovery processing, including a Route Request and a Route Reply.More specifically, the mesh network includes nodes “S” 100S, “A” 100A,“B” 100B, “C” 100C, “D” 100D, “E” 100E, “F” 100F, “G” 100G, “H” 100H,and “J” 100J of FIG. 1. A Route Discovery operation is originated bynode “S” to destination node “D”. Consider a scenario where only asingle copy of a Route Request flood is forwarded by each node, asillustrated by Route Requests 210SA, 210SB, 210AC, 210CG, 210GH, 210GJ,210GF, 210HD, 210JD, 210FJ, 210EF, and 210BE. If the first copy of theRoute Request reaching node “J” is from node “F”, and the first copy ofthe Route Request reaching node “F” is from node “E”, then allillustrated links except (“G”, “J”) and (“G”, “F”) will be learned bynode “D”. A Route Reply is generated by node “D”, and returns a routedescribed as [“S”, “B”, “E”, “F”, “J”, “D”], as illustrated by RouteReplies 220DJ, 220JF, 220FE, 220EB, and 220BS.

In some usage scenarios different copies of a Route Request followdifferent paths within the network. As a result, a node may receive morethan one Route Request belonging to the same Route Discovery. To enableduplicate detection, the originator of the Route Request includes in theRoute Request a sequence number that is unique to the originator.Forwarding nodes then use the sequence number to identify Route Requestpackets belonging to the same Route Discovery. In some embodiments nodesimplement a Route Request table that includes entries having sourceaddress and corresponding sequence number information. The Route Requesttable is updated as Route Requests are received, and searched toidentify a duplicate Route Request. In some embodiments each node in themesh forwards a fixed number of copies of a Route Request whenprocessing a given Route Discovery. The fixed number may be one, two,three, or any other similar quantity, according to variousimplementations. In some usage scenarios one or more copies of a RouteRequest may follow respective distinct routes. If so, then during asingle Route Discovery, the destination of the Route Discovery may learnmultiple routes to the source (i.e. multiple paths to the initiator ofthe Route Discovery). In some embodiments multiple copies of a RouteRequest are forwarded to make it more likely that multiple routes may bediscovered, even though only a single route may exist, or potentialadditional routes may be temporarily obscured due to intermittent packetloss.

Information received in response to a Route Request represents state ofthe network over the period of time during which the Route Request isoriginated until it reaches the target. Another Route Request originatedat a later (or earlier) time may gather different information, asnetwork topology may change over time. Changes in network topology maybe a result of nodes moving from one physical location to another, nodesbeing added to or removed from the network, or changes in environmentalconditions such that communication between some nodes is improved (ordegraded). Generally the changes to network topology are discovered andlearned over time as Route Requests move through the network. Moreefficient paths replace (in a Route Cache context, for example) lessefficient paths, and operational paths replace non-operational paths.

For example, a first node enabling a first path between an originatorand a target may be operational at a first time when a first RouteRequest is active in the network. Continuing with the example, a secondnode enabling a second path between the originator and the target may beoperational at a second time (and not during the first time) when asecond Route Request is active in the network. If the second time isafter the first time and the second path is more efficient than thefirst, then nodes will learn the second path and may use informationrelating to it to replace information relating to the less efficientfirst path.

Route Optimization

During a Route Discovery flood, nodes in the network learn aboutcurrently available links in the network and properties associated withthe nodes, the links, or both. The properties, or information, may beuseful not to only to the destination of the Route Discovery but also toother nodes in the network that are sending traffic. The information maybe useful since new and better paths may have become available in thenetwork as a result of node movement, changes in link characteristics,or other similar modifications to the mesh network. The following aresummaries of selected “Route Optimization” mechanisms making use of theinformation to improve network performance.

Upon receipt of any Route Discovery flood, a node that is thedestination of active flows from the originator of the Route Discoveryexamines the associated Route Request packet and determines (or learns)any new links. The destination node then checks to see if any of the newlinks, optionally combined with routing information the destination isalready aware of, result in an improved route to the originator of theRoute Request. If so, then the destination node returns a Route Replywith the better route to the originator of the flood.

In usage scenarios where compute power is relatively unconstrained (i.e.freely available), a node may optionally re-compute routes to one ormore nodes (or all nodes) the node is in active communication with. Therecomputed routes are then compared to currently known routes. For eachof the better routes found (if any) a Route Reply is sent to the nodeaccessible via the respective better route. In some embodiments theroute comparison includes comparing numbers of hops associated with theroutes being compared. The result is that a Route Reply is provided toeach node for which an improved route has become available. In someembodiments initiation of Route Replies is optionally rate limited tolimit Route Reply packets transmitted to one or more nodes.

In some embodiments each node may periodically re-compute all routes (orany portion thereof) for all active communication flows (or any portionthereof) for which the node is a source, a destination, or a forwardingnode. The node may then optionally compare the recomputed routes withpreviously known routes, to determine if there are better routesavailable. If the node is a source of traffic and the node discovers abetter route, then the node may start to use the better (or new) routeimmediately. If the node is a destination, then the node may send aRoute Reply to the source of the flow. If the node is a forwarding nodefor a traffic flow, then the node may compare the new (and better) routeto the route currently used by the flow. If a next hop toward the sourceof the flow via the new route is different from a next hop toward thesource via the current route, then a Route Reply may be sent.Accordingly only a node adjacent to where the new and current routesdiffer originates a Route Reply, and only a single Route Reply is sentfor a newly detected improved (or shortened) path, even though aplurality of nodes may detect the improved path. If the flow sourcecontinues to use an old route, then corresponding Route Replies may besent in response. In some embodiments after several attempts RouteReplies are no longer sent, to account for usage scenarios where thesource may be using a less nearly optimal (or apparently so) route forreasons not known by the forwarding node.

FIGS. 3A and 3B illustrate a time-sequence operational view of selectedaspects of an embodiment of mesh routing optimization. Morespecifically, FIG. 3A illustrates a mesh network including nodes “S”300S, “A” 300A, “B” 300B, “C” 300C, “D” 300D, “E” 300E, “F” 300F, and“J” 300J. If node “S” performs a Route Discovery to node “D” (in usagescenarios where each node forwards two or more copies of each RouteRequest, as illustrated by Route Requests 310SA, 310SB, 310AC, 310AB,310BE, 310EF, 310FJ, and 310JD), then the nodes “B”, “E”, and “F” wouldlearn link (“S”, “A”). Consider a situation where the best route betweennode “S” and node “D” is determined to be [“S”, “B”, “E”, “F”, “J”, “D”]and that node “S” uses path [“S”, “B”, “E”, “F”, “J”, “D”] to routepackets to node “D”.

FIG. 3B illustrates the mesh network of FIG. 3A, at a later point intime compared to that of FIG. 3A, when node “A” has moved so that node“A” may communicate (i.e. establish and maintain a link) with node “F”while still having links to nodes “S” and “C”. If node “C” initiates aRoute Discovery (to any node), then nodes “F”, “J”, and “D” would learnof a better path to “S” via “A”. An example route discovery initiatedfrom node “C” is illustrated by Route Requests 330CA, 330AS, 330AF,330FJ, 330JD, 330FE, 330EB, and 330BS. When performing periodic routere-computation, each of nodes “F”, “J”, and “D” detect the shorter path.However, only node “F” sends a Route Reply to “S” (illustrated by RouteReplies 320FA, and 320AS) describing the new route, [“S”, “A”, “F”, “J”,“D”], since node “F” is the node where the path has been improved (orshortened). Originating the Route Reply from a selected node where thenew and old routes differ ensures that only a single Route Reply is sentfor the newly detected better path, even though more than one node maydetect the better path.

In the foregoing description the best path is the route having theshortest hop count metric. Other metrics for determining the best pathmay be used based on implementation dependent criteria, as theaforementioned techniques are independent of details of best pathdetermination details.

In some embodiments processing relating to originating the Route Replyfrom a selected node includes background processing of link informationlearned through all floods (or any portion thereof) sent by any nodewithin a period of time, and may also include optional processing ofinformation relating to new neighboring links. Computational overhead isincurred only when new or better routes are not available (i.e.processing is “wasted” in the sense that no improvements are found). Asmall amount of control packet overhead (i.e. Route Reply packettraffic) is incurred when improved routes are discovered andcommunicated. In some implementations nodes that are actively sourcingtraffic may periodically originate Route Discovery floods with nospecific target destination, thus providing opportunities to refresh (orimprove) routing information in absence of otherwise occurring RouteDiscovery floods.

In some embodiments or usage scenarios Route Discovery is with respectto a single target; i.e. directed to find a route to one destination. Insome embodiments or usage scenarios Route Discovery is with respect to aplurality of targets; i.e. directed to find routes to a plurality ofdestinations. If Route Discovery is with respect to a single target,then the associated Route Request is not propagated by the target, sincethe route to be discovered is then known, and thus the target (ordestination) address is not included in accumulated path information. IfRoute Discovery is with respect to more than one target, then theassociated Route Request may be forwarded by any number of the targets,as each target individually is not aware of whether or not all targetshave received the request, and thus the forwarding targets may eachappear in accumulated path information.

The techniques illustrated by the aforementioned embodiments areapplicable to mesh networks (wired and wireless), ad hoc networks (wiredand wireless), as well as other similar self-organizing networks andnetworks having topology that changes over time.

Node Hardware and Software

FIG. 4 illustrates selected details of hardware aspects of an embodimentof a node. The illustrated node includes Processor 405 coupled tovarious types of storage, including volatile read/write memory “MemoryBank” elements 401.1-2 via DRAM Memory Interface 402, and non-volatileread/write memory FLASH 403 and EEPROM 404 elements. The processor isfurther coupled to Ethernet Interface 406 providing a plurality ofEthernet Ports 407 for establishing wired links, and Wireless Interface409 providing radio communication of packets for establishing wirelesslinks. In some embodiments the Wireless Interface is compatible with anIEEE 802.11 wireless communication standard (such as any of 802.11a,802.11b, and 802.11g). In some embodiments the Wireless Interfaceoperates (in conjunction with any combination of hardware and softwareelements) to collect statistics with respect to neighboring nodes of amesh. The statistics may include any combination of signal strength andlink quality. In some embodiments the Wireless Interface is configurableto drop all packets below a settable Received Signal Strength Indicator(RSSI) threshold. The illustrated partitioning is only one example, asother equivalent embodiments of a node are possible.

The illustrated node may function as any one of the nodes illustrated inFIGS. 1, 2, 3A, and 3B. The Wireless Interface of FIG. 4 may enablecommunication between nodes and provide low-level transport for RouteRequest and Route Reply packets.

In operation the processor fetches instructions from any combination ofthe storage elements (DRAM, FLASH, and EEPROM) and executes theinstructions. Some of the instructions correspond to software associatedwith Route Request, Route Reply, and route optimization operations.Route cache information may be stored in any combination of the storageelements according to instructions executed during processing associatedwith Route Reply processing.

FIG. 5 illustrates selected details of software aspects of an embodimentof a node. The illustrated software includes Network Management Software(NMS) Manager 501 interfacing to Network Interface Manager 502 andFault, Configuration, Accounting, Performance, and Security (FCAPS)Manager 503. Kernel Interface 510 interfaces the Managers to Routing andTransport Protocols layer 511 and Flash File System module 513. TheRouting Protocols include portions of processing relating to RouteRequest generation, Route Reply interpretation, and route cachemanagement. The Transport Protocols include TCP and UDP. The Flash FileSystem module interfaces to Flash Driver 516 that is illustratedconceptually coupled to FLASH hardware element 523 that isrepresentative of a flash file system stored in any combination of theFLASH and EEPROM elements of FIG. 4. Layer-2 Abstraction Layer 512interfaces the Routing and Transport Protocols to Ethernet and RadioDrivers 514 and 515, respectively. The Ethernet Driver is illustratedconceptually coupled to Ethernet Interface 526 that is representative ofthe Ethernet Interface of FIG. 4. The Radio Driver is illustratedconceptually coupled to Wireless Interface 529 that is representative ofthe Wireless Interface of FIG. 4. In some embodiments the software mayalso include a serial driver. The software is stored on a computerreadable medium (e.g. any combination of the DRAM, FLASH, and EEPROMelements), and is executed by the processor. The illustratedpartitioning is an example only, as many other equivalent arrangementsof layers are possible.

CONCLUSION

Although the foregoing embodiments have been described in some detailfor purposes of clarity of understanding, the invention is not limitedto the details provided. There are many alternative ways of implementingthe invention. The disclosed embodiments are illustrative and notrestrictive. It will be understood that many variations in construction,arrangement and use are possible consistent with the teachings andwithin the scope of the claims appended to the issued patent. Forexample, interconnect and function-unit bit-widths, clock speeds, andthe type of technology used may generally be varied in each componentblock. The order and arrangement of flowchart and flow diagram processand function elements may generally be varied. Also, unless specificallystated to the contrary, the value ranges specified, the maximum andminimum values used, or other particular specifications (such asintegration techniques and design flow technologies), are merely thoseof the illustrative embodiments, can be expected to track improvementsand changes in implementation technology, and should not be construed aslimitations.

Functionally equivalent techniques known to those of ordinary skill inthe art may be employed instead of those illustrated to implementvarious components, sub-systems, functions, operations, routines, andsub-routines. The names given to interconnect, logic, functions, androutines are merely illustrative, and should not be construed aslimiting the concepts taught. It is also understood that many designfunctional aspects may be carried out in either hardware (i.e.,generally dedicated circuitry) or software (i.e., via some manner ofprogrammed controller or processor), as a function of implementationdependent design constraints and the technology trends of fasterprocessing (which facilitates migration of functions previously inhardware into software) and higher integration density (whichfacilitates migration of functions previously in software intohardware). Specific variations may include, but are not limited to:differences in networking technology (such as wired/wireless, protocols,and bandwidths); and other variations to be expected when implementingthe concepts taught herein in accordance with the unique engineering andbusiness constraints of a particular application.

The embodiments have been illustrated with detail and environmentalcontext well beyond that required for a minimal implementation of manyof aspects of the concepts taught. Those of ordinary skill in the artwill recognize that variations may omit disclosed components withoutaltering the basic cooperation among the remaining elements. It is thusunderstood that much of the details disclosed are not required toimplement various aspects of the concepts taught. To the extent that theremaining elements are distinguishable from the prior art, omittedcomponents are not limiting on the concepts taught herein.

All such variations in design comprise insubstantial changes over theteachings conveyed by the illustrative embodiments. It is alsounderstood that the concepts taught herein have broad applicability toother networking and communication applications, and are not limited tothe particular application or industry of the illustrated embodiments.The invention is thus to be construed as including all possiblemodifications and variations encompassed within the scope of the claimsappended to the issued patent.

1. (canceled)
 2. A system comprising: a wireless mesh network of nodes;wherein each of the nodes comprises a respective processing elementenabled to execute a path dissemination function to conditionallydistribute a current best path at least in response to a determinationthat the current best path has changed from a previous best path and adetermination that the respective node is a first node of divergencebetween the previous best path and the current best path; and whereinthe first node of divergence has at least a first link, a second link,and a third link to respective others of the nodes, the current bestpath comprises the first link and the second link, and the previous bestpath comprises the first link and the third link.
 3. The system of claim2, wherein the respective processing elements are further enabled toexecute a node of divergence function to perform the determination thatthe respective node is the first node of divergence between the previousbest path and the current best path.
 4. The system of claim 2, whereinthe respective processing elements are further enabled to execute a pathchange function to perform the determination that the current best pathhas changed from the previous best path.
 5. The system of claim 2,wherein the path dissemination function conditionally distributes a newpath to a plurality of recipients when a better path is available. 6.The system of claim 5, wherein at least one of the recipients providesat least one of an Internet connectivity service and a web proxyservice.
 7. A device comprising: a wireless interface, wherein thedevice is operable as a node of a plurality of nodes of a wireless meshnetwork, and the wireless interface is enabled to communicate withrespective others of the plurality nodes via at least a first link, asecond link, and a third link; and a processing element enabled toexecute a path dissemination function to conditionally distribute acurrent best path at least in response to a determination that thecurrent best path has changed from a previous best path and adetermination that the device is a first node of divergence between thecurrent best path, comprising the first link and the second link, andthe previous best path, comprising the first link and the third link. 8.The device of claim 7, wherein the processing element is further enabledto execute a node of divergence function to perform the determinationthat the device is the first node of divergence between the current bestpath and the previous best path.
 9. The device of claim 7, wherein theprocessing element is further enabled to execute a path change functionto perform the determination that the current best path has changed fromthe previous best path.
 10. The device of claim 7, wherein the pathdissemination function conditionally distributes a new path to aplurality of recipients when a better path is available.
 11. The deviceof claim 10, wherein at least one of the recipients provides at leastone of an Internet connectivity service and a web proxy service.
 12. Amethod comprising: in a particular node of a wireless mesh network ofnodes, computing a first route from a source node of the nodes to adestination node of the nodes, the first route comprising a first linkand a second link between a particular one of the nodes and respectiveothers of the nodes; further in the particular node, computing a secondroute from the source node to the destination node, the second routecomprising the first link and a third link between the particular nodeand respective others of the nodes; and further in the particular node,in response to ascertaining that the second route is an improved routewith respect to the first route, conditionally communicating theimproved route to a plurality of recipients such that the particularnode communicates the improved route when a determination that theparticular node is a first node of divergence between the first routeand the second route is positive, and the particular node is silentabout the improved route when the determination is negative.
 13. Themethod of claim 12, further in the particular node, performing thedetermination that the particular node is the first node of divergencebetween the first route and the second route.
 14. The method of claim12, further in the particular node, performing the ascertaining that thesecond route is an improved route with respect to the first route. 15.The method of claim 12, wherein at least one of the recipients providesat least one of an Internet connectivity service and a web proxyservice.
 16. The method of claim 12, further in the particular node,comparing the first route to the second route according to a comparisoncriteria comprising a count of hops between the source node and thedestination node.
 17. A non-transitory computer readable medium having aset of instructions stored therein that when executed cause functions tobe performed comprising: computing a first route from a source node of awireless mesh network of nodes to a destination node of the nodes, thefirst route comprising a first link and a second link between aparticular one of the nodes and respective others of the nodes;computing a second route from the source node to the destination node,the second route comprising the first link and a third link between theparticular node and respective others of the nodes; and in response toascertaining that the second route is an improved route with respect tothe first route, conditionally communicating the improved route to aplurality of recipients such that the particular node communicates theimproved route when a determination that the particular node is a firstnode of divergence between the first route and the second route ispositive, and the particular node is silent about the improved routewhen the determination is negative.
 18. The non-transitory computerreadable medium of claim 17, wherein the functions further compriseperforming the determination that the particular node is a first node ofdivergence between the first route and the second route.
 19. Thenon-transitory computer readable medium of claim 17, wherein thefunctions further comprise performing the ascertaining that the secondroute is an improved route with respect to the first route.
 20. Thenon-transitory computer readable medium of claim 17, wherein at leastone of the recipients provides at least one of an Internet connectivityservice and a web proxy service.
 21. The non-transitory computerreadable medium of claim 17, wherein the functions further comprisecomparing the first route to the second route according to a comparisoncriteria comprising a count of hops between the source node and thedestination node.